home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / ATUtilities.lha / ATUtilities / janus.h < prev    next >
C/C++ Source or Header  |  2000-09-26  |  6KB  |  250 lines

  1. /* ******************************************************************* */
  2. /* **                                                               ** */
  3. /* **           Janus-Library: Strukturdefinitionen                 ** */
  4. /* **                                                               ** */
  5. /* ******************************************************************* */
  6.  
  7. /*
  8.  WICHTIG: Beachten Sie die Hinweise in der Datei janus_lib.fd !!!
  9.  ----------------------------------------------------------------
  10. */
  11.  
  12. #ifndef JANUS_JANUSBASE_H
  13. #define JANUS_JANUSBASE_H
  14. #ifndef EXEC_TYPES_H
  15. #include <exec/types.h>
  16. #endif
  17. #ifndef EXEC_LIBRARIES_H
  18. #include <exec/libraries.h>
  19. #endif
  20. #ifndef EXEC_INTERRUPTS_H
  21. #include <exec/interrupts.h>
  22. #endif
  23. #ifndef EXEC_SEMAPHORES_H
  24. #include <exec/semaphores.h>
  25. #endif
  26. #ifndef EXEC_EXECBASE_H
  27. #include <exec/execbase.h>
  28. #endif
  29. #ifndef LIBRARIES_DOS_H
  30. #include <libraries/dos.h>
  31. #endif
  32.  
  33. struct JanusBase
  34.  {
  35.   struct Library            LibNode;
  36.   ULONG                     SystemBits[2];
  37.   struct DualPortedMemory  *ParameterRAM;
  38.   APTR                      IOAccessRAM;
  39.   APTR                      BufferRAM;
  40.   struct ExecBase          *ExecBase;
  41.   struct DosLibrary        *DosBase;
  42.   BPTR                      SegList;
  43.   struct JIntTable         *JIntTable;
  44.   struct Interrupt          AmigaInt;
  45.   struct Interrupt          JanusInt;
  46.   UWORD                     RegOffset;
  47.   UWORD                     AutoBoot;
  48.   UWORD                     DualPortedSeg;
  49.   struct ZaphodServiceTask *ZaphodTask;
  50.   ULONG                     JanusReserved[4];
  51.   struct SetupSig          *JanusInterrupts[32];
  52. };
  53.  
  54. struct ZaphodServiceTask
  55. {
  56.  struct SignalSemaphore  Semaphore;
  57.  struct ServiceArea     *JInt14Data;
  58.  ULONG                   JInt14SigBit;
  59.  struct SetupSig        *Jint14SetupSig;
  60.  struct Process         *ZaphodServiceTask;
  61.  struct GfxBase         *GfxBase;
  62.  ULONG                   ZaphodReserved[4];
  63. };
  64.  
  65. struct ServiceArea
  66. {
  67.  UBYTE Lock;
  68.  UBYTE Pad;
  69.  RPTR Reserved[8];
  70.  RPTR PCAddService[2];
  71.  RPTR PCDeleteService[2];
  72.  RPTR AmigaAddService[2];
  73.  RPTR AmigaDeleteService[2];
  74.  RPTR FirstService;
  75. };
  76.  
  77. struct AmigaCustomer
  78. {
  79.  struct AmigaCustomer *NextAmigaCustomer;
  80.  UWORD                 Flags;
  81.  struct Task          *Task;
  82.  ULONG                 SignalMask;
  83.  ULONG                 Reserved[4];
  84. };
  85.  
  86. struct PCMemory
  87. {
  88.  RPTR PCOffset;
  89.  RPTR PCSegment;
  90. };
  91.  
  92. struct ServiceData
  93. {
  94.   ULONG                   ApplicationID;
  95.   UWORD                   LocalID;
  96.   UWORD                   Flags;
  97.   UBYTE                   ServiceDataLock;
  98.   UBYTE                   AmigaUserCount;
  99.   UBYTE                   PCUserCount;
  100.   UBYTE                   ReservedByte;
  101.   UWORD                   MemSize;
  102.   UWORD                   MemType;
  103.   RPTR                    MemOffset;
  104.   APTR                    AmigaMemPtr;
  105.   struct PCMemory         PCMemPtr;
  106.   RPTR                    JRememberKey;
  107.   RPTR                    NextServiceData;
  108.   struct PCMemory         FirstPCCustomer;
  109.   struct AmigaCustomer   *FirstAmigaCustomer;
  110.   struct SignalSemaphore *Semaphore;
  111.   ULONG                   ZaphodRserved[4];
  112. };
  113.  
  114. #define ADDS_EXCLUSIVE   0x0001
  115. #define ADDS_TOPC_ONLY   0x0002
  116. #define ADDS_FROMPC_ONLY 0x0004
  117. #define ADDS_TOAmiga     0x0008
  118. #define ADDS_FROMAmiga   0x0010
  119. #define ADDS_LOCKDATA    0x0020
  120. #define SD_CREATED       0x0100
  121.  
  122. #define GETS_WAIT        0x0001
  123. #define GETS_TOPC_ONLY   0x0002
  124. #define GETS_FROMPC_ONLY 0x0004
  125. #define GETS_TOAmiga     0x0008
  126. #define GETS_FROMAmiga   0x0010
  127. #define GETS_EXCLUSIVE   0x0020
  128. #define GETS_ALOAD_A     0x0040
  129. #define GETS_ALOAD_PC    0x0080
  130.  
  131. #define JSERV_OK         0
  132. #define JSERV_NOJANUSMEM 1
  133. #define JSERV_NOAmigaMEM 2
  134. #define JSERV_NOPCMEM    3
  135. #define JSERV_NOSERVICE  4
  136. #define JSERV_DUPSERVICE 5
  137.  
  138. #define SERVICE_DELETED   0x0001
  139. #define EXPUNGE_SERVICE   0x0002
  140. #define SERVICE_AmigaSIDE 0x0004
  141. #define Amiga_MEMPTR      0x0100
  142. #define PC_MEMPTR         0x0200
  143.  
  144. struct JanusRemember
  145. {
  146.  RPTR NextRemember;
  147.  RPTR Offset;
  148.  USHORT Size;
  149.  USHORT Type;
  150. };
  151.  
  152. #define MEMF_PARAMETER    0x0001
  153. #define MEMF_BUFFER       0x0002
  154. #define MEM_BYTEACCESS    0x0000
  155. #define MEM_WORDACCESS    0x1000
  156. #define MEM_GRAPHICACCESS 0x2000
  157. #define MEM_IOACCESS      0x3000
  158. #define MEM_ACCESSMASK    0x3000
  159. #define MEM_TYPEMASK      0x00FF
  160.  
  161. struct SetupSig
  162. {
  163.  struct Interrupt  ss_Interrupt;
  164.  struct Task      *ss_TaskPtr;
  165.  ULONG             ss_SigMask;
  166.  APTR              ss_ParamPtr;
  167.  ULONG             ss_ParamSize;
  168.  UWORD             ss_JanusIntNum;
  169. };
  170.  
  171. #define JSERV_MINT          0
  172. #define JSERV_GINT          1
  173. #define JSERV_CRT1INT       2
  174. #define JSERV_CRT2INT       3
  175. #define JSERV_ENBKB         4
  176. #define JSERV_LPT1INT       5
  177. #define JSERV_COM2INT       6
  178. #define JSERV_PCBOOTED      7
  179. #define JSERV_SCROLL        8
  180. #define JSERV_HARDDISK      9
  181. #define JSERV_READAmiga    10
  182. #define JSERV_READPC       11
  183. #define JSERV_AmigaCALL    12
  184. #define JSERV_PCCALL       13
  185. #define JSERV_AmigaSERVICE 14
  186. #define JSERV_PCSERVICE    15
  187.  
  188. struct JanusMemHeader
  189. {
  190.  UBYTE Lock;
  191.  UBYTE Pad;
  192.  APTR  AmigaPtr;
  193.  RPTR  PCOffset;
  194.  UWORD Used;
  195.  UWORD Max;
  196.  UWORD Free;
  197. };
  198.  
  199. struct JIntTable
  200. {
  201.  struct SetupSig *JanusInts[32];
  202. };
  203.  
  204. struct JIntCallTable
  205. {
  206.  UBYTE pcToAmiga;
  207.  UBYTE amigaToPC;
  208. };
  209.  
  210. struct DualPortedMemory
  211. {
  212.  UBYTE                 Lock;
  213.  UBYTE                 Pad;
  214.  struct JanusMemHeader ParameterRAM;
  215.  struct JanusMemHeader BufferRAM;
  216.  RPTR                  JIntCallTable;
  217.  RPTR                  JIntParamTable;
  218.  UWORD                 JIntCount;
  219.  ULONG                 SystemBits;
  220.  UWORD                 JanusLibraryRevision;
  221.  UWORD                 JanusLibraryVersion;
  222.  UWORD                 JanusHandlerRevision;
  223.  UWORD                 JanusHandlerVersion;
  224.  UWORD                 BridgeBoardReady;
  225. };
  226.  
  227. #define INTCALL_ACTION    127
  228. #define INTCALL_NONE      255
  229. #define AUTOBOOT_ON         1
  230. #define AUTOBOOT_OFF        0
  231. #define BB_READY       0x5442;
  232.  
  233. struct TimeServReq
  234. {
  235.  UWORD Year;
  236.  UBYTE Month;
  237.  UBYTE Day;
  238.  UBYTE Hour;
  239.  UBYTE Minutes;
  240.  UBYTE Seconds;
  241.  UBYTE String[27];
  242.  UWORD Err;
  243. };
  244.  
  245. #define TIMESERV_APPID 1L
  246. #define TIMESERV_LOCID 1L
  247.  
  248. #endif
  249.  
  250.